/*
 * match 匹配
 * Rust 通过match 关键字提供模式匹配，和C的`switch`用法类似。
 * 第一个匹配分支会被对比，并且所有可能的值都必须被覆盖
 */
fn main() {
    let number = 13;

    println!("Tell me about {}", number);
    match number {
        // 匹配单个值
        1 => println!("one"),
        // 匹配多个值
        2 | 3 | 5 | 7 | 11 => println!("This is a prime"),
        // 匹配一个闭区间范围
        13..=19 => println!("A teen"),
        // 处理其它情况
        _ => println!("special"),
    }

    let boolean = true;
    // match 也是一个表达式
    let binary = match boolean {
        // match 分支必须覆盖所有可能的值
        false => 0,
        true => 1,
    };
    println!("{} -> {}", boolean, binary);
}
